//package com.xxx.springboot.config;
//
//import com.alicp.jetcache.CacheBuilder;
//import com.alicp.jetcache.anno.CacheConsts;
//import com.alicp.jetcache.anno.support.GlobalCacheConfig;
//import com.alicp.jetcache.anno.support.SpringConfigProvider;
//import com.alicp.jetcache.embedded.EmbeddedCacheBuilder;
//import com.alicp.jetcache.embedded.LinkedHashMapCacheBuilder;
//import com.alicp.jetcache.redis.RedisCacheBuilder;
//import com.alicp.jetcache.redis.RedisCacheBuilder.RedisCacheBuilderImpl;
//import com.alicp.jetcache.support.*;
//import com.google.common.collect.Maps;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.core.env.Environment;
//import redis.clients.jedis.JedisPool;
//import redis.clients.jedis.JedisPoolConfig;
//
//import java.util.Map;
//import java.util.concurrent.TimeUnit;
//
///**
// * jetcache配置（已迁移到springboot配置文件里）
// */
////@Configuration
////@EnableMethodCache(basePackages="com.xxx.springboot")
////@EnableCreateCacheAnnotation
//public class JetCacheConfig {
//
//	@Value("${spring.redis.host}")
//    private String host;
//
//    @Value("${spring.redis.port}")
//    private int port;
//
//    @Value("${spring.redis.password}")
//    private String password;
//
//    @Value("${spring.redis.timeout}")
//    private int timeout;
//
//    @Value("${spring.redis.jedis.pool.max-active}")
//    private int maxActive;
//
//    @Value("${spring.redis.jedis.pool.max-wait}")
//    private int maxWait;
//
//    @Value("${spring.redis.jedis.pool.max-idle}")
//    private int maxIdle;
//
//    @Value("${spring.redis.jedis.pool.min-idle}")
//    private int minIdle;
//
//	@Bean
//	public JedisPoolConfig JedisPoolConfig() {
//		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//		jedisPoolConfig.setMaxTotal(maxActive);
//		jedisPoolConfig.setMaxWaitMillis(maxWait);
//		jedisPoolConfig.setMaxIdle(maxIdle);
//		jedisPoolConfig.setMinIdle(minIdle);
//		jedisPoolConfig.setTestOnBorrow(false);
//		return jedisPoolConfig;
//	}
//
//	@Bean
//	public JedisPool jedisPool(JedisPoolConfig jedisPoolConfig, Environment evn) {
//		JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password);
//		return jedisPool;
//	}
//
//    @Bean
//    public SpringConfigProvider springConfigProvider() {
//        return new SpringConfigProvider();
//    }
//
//    @Bean
//	public AbstractValueEncoder ValueEncoder() {
//		return JavaValueEncoder.INSTANCE;
//	}
//
//	@Bean
//	public AbstractValueDecoder ValueDecoder() {
//		return JavaValueDecoder.INSTANCE;
//	}
//
//    @SuppressWarnings("rawtypes")
//    @Bean
//    public GlobalCacheConfig globalCacheConfig(SpringConfigProvider configProvider, JedisPool jedisPool){
//    	// 本地缓存
//    	Map<String, CacheBuilder> localBuilders = Maps.newConcurrentMap();
//		EmbeddedCacheBuilder localBuilder = LinkedHashMapCacheBuilder
//				.createLinkedHashMapCacheBuilder()
//				.keyConvertor(FastjsonKeyConvertor.INSTANCE)
//				.expireAfterWrite(600, TimeUnit.SECONDS); // 本地缓存过期时间：600秒
//		localBuilders.put(CacheConsts.DEFAULT_AREA, localBuilder);
//
//		// 远程缓存
//		int expireSeconds = 600; // 远程过期时间（单位：秒）
//		RedisCacheBuilderImpl redisCacheBuilder = RedisCacheBuilder.createRedisCacheBuilder()
//				.keyConvertor(FastjsonKeyConvertor.INSTANCE)
//				.valueEncoder(ValueEncoder())
//				.valueDecoder(ValueDecoder())
//				.jedisPool(jedisPool)
//				.expireAfterWrite(expireSeconds, TimeUnit.SECONDS);
//		Map<String, CacheBuilder> remoteBuilder = Maps.newConcurrentMap();
//		remoteBuilder.put(CacheConsts.DEFAULT_AREA, redisCacheBuilder);
//
//		// 返回对象
//		GlobalCacheConfig globalCacheConfig = new GlobalCacheConfig();
//		globalCacheConfig.setConfigProvider(configProvider);
//		globalCacheConfig.setLocalCacheBuilders(localBuilders);
//		globalCacheConfig.setRemoteCacheBuilders(remoteBuilder);
//		globalCacheConfig.setStatIntervalMinutes(10); // 统计间隔时间：10分钟
//		globalCacheConfig.setAreaInCacheName(false);
//		return globalCacheConfig;
//    }
//}
